﻿Imports System.Data
Imports System.Data.SqlClient
Partial Class Sistema_ModuloPsicosocialIndividual
    Inherits System.Web.UI.Page
    Dim editar As Boolean
    Dim Edad As Integer
    Dim mensaje As String
    Dim Exepcion As String
    Dim NumeroError As Integer
    Public iderespuesta As Integer
    Public mesescumplidos As Integer
    Dim actualizar As Integer
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Page.IsPostBack = False Then
            If String.IsNullOrEmpty(Request.QueryString.Item("idPersona")) = False Then
                hdIdPersona.Value = Request.QueryString.Item("idPersona")
                hdIdvisita.Value = Request.QueryString.Item("Idvisita")
                hdIdhogar.Value = Request.QueryString.Item("Idhogar")
                EncabezadoModulo1.idPersona = Request.QueryString.Item("idPersona")
                EncabezadoModulo1.idVisita = Request.QueryString.Item("Idvisita")
            End If
            llenarCombos()

            Using bd As New BdHogaresDataContext
                Dim a = From i In bd.Web_ModuloPsicosocialIndividuals
                          Where i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value
                          Select i.idPersona
                Try
                    actualizar = IsDBNull(a.First)
                    traerDatos(hdIdvisita.Value)
                Catch
                    'identificar los datos de la visita anterior
                    Dim c = (From i In bd.Web_ModuloPsicosocialIndividuals
                            Where i.idPersona = hdIdPersona.Value
                                Select CType(i.idvisita, Integer?)).Max
                    guardar(True)
                    If IsNothing(c) = False Then
                        traerDatos(c)
                        lblinformacion.Text = "SE HA CARGADO LA INFORMACIÓN DE LA VISITA ANTERIOR A MODO DE VERIFICACIÓN, DEBE MODIFICAR LOS DATOS QUE HAN VARIADO Y HACER CLIC EN GUARDAR"
                    End If
                End Try
            End Using
        End If


        Using bd As New BdHogaresDataContext
            Dim a = From i In bd.Web_ModuloPsicosocialIndividuals
                      Where i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value
                      Select i.idRespuesta
            If a.Count > 0 Then
                iderespuesta = a.First
            End If
        End Using
        listas()
    End Sub
    Sub listas()
       
    End Sub
  
    Sub llenarCombos()
        Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("CNNdb").ConnectionString)
            cnn.Open()
            LlenarItems(rbexperienciavivida, "sino", cnn)
            LlenarItems(rbreconocerol, "sino", cnn)
            LlenarItems(rbreconocepersonafortaleza, "sino", cnn)
            LlenarItems(rbexperienciavividademas, "sino", cnn)
            LlenarItems(rbidentificaemociones, "sino", cnn)
            LlenarItems(rbreconocerelacionesafectivas, "sino", cnn)
            LlenarItems(rbasertivodecisiones, "sino", cnn)
            LlenarItems(rbusodialogo, "sino", cnn)
            LlenarItems(rbproyeccionfuturo, "sino", cnn)
            LlenarItems(rbbienestarPsicologico, "sino", cnn)

            cnn.Close()
        End Using
    End Sub
    Sub LlenarItems(ByVal objeto As Object, ByVal pregunta As String, ByRef cnn As SqlConnection)
        If pregunta = "sino" Then : objeto.Items.Add(New ListItem("Sí", 1)) : objeto.Items.Add(New ListItem("No", 2)) : Exit Sub : End If
        Using drDatos As SqlDataReader = Funciones.TraerListas(pregunta, cnn)
            With objeto
                .DataSource = drDatos
                .DataTextField = "nombreopcion"
                .DataValueField = "valoropcion"
                .DataBind()
            End With
        End Using
    End Sub

#Region "cargar Datos"

    Sub traerDatos(idVisita As Integer) 'carga los controles con los datos de la bd
        Using bd As New BdHogaresDataContext
            Dim a = From i In bd.Web_ModuloPsicosocialIndividuals
                      Where i.idvisita = idVisita And i.idPersona = hdIdPersona.Value
                      Select i
            Dim Datos As New Web_ModuloPsicosocialIndividual
            Datos = a.FirstOrDefault()
            rbexperienciavivida.SelectedValue = IIf(IsDBNull(Datos.rbexperienciavivida), 0, Datos.rbexperienciavivida)
            rbreconocerol.SelectedValue = IIf(IsDBNull(Datos.rbreconocerol), 0, Datos.rbreconocerol)
            rbreconocepersonafortaleza.SelectedValue = IIf(IsDBNull(Datos.rbreconocepersonafortaleza), 0, Datos.rbreconocepersonafortaleza)
            rbexperienciavividademas.SelectedValue = IIf(IsDBNull(Datos.rbexperienciavividademas), 0, Datos.rbexperienciavividademas)
            rbidentificaemociones.SelectedValue = IIf(IsDBNull(Datos.rbidentificaemociones), 0, Datos.rbidentificaemociones)
            rbreconocerelacionesafectivas.SelectedValue = IIf(IsDBNull(Datos.rbreconocerelacionesafectivas), 0, Datos.rbreconocerelacionesafectivas)
            rbasertivodecisiones.SelectedValue = IIf(IsDBNull(Datos.rbasertivodecisiones), 0, Datos.rbasertivodecisiones)
            rbusodialogo.SelectedValue = IIf(IsDBNull(Datos.rbusodialogo), 0, Datos.rbusodialogo)
            rbproyeccionfuturo.SelectedValue = IIf(IsDBNull(Datos.rbproyeccionfuturo), 0, Datos.rbproyeccionfuturo)
            rbbienestarPsicologico.SelectedValue = IIf(IsDBNull(Datos.rbbienestarPsicologico), 0, Datos.rbbienestarPsicologico)

            txtexperienciavivida.Text = IIf(IsDBNull(Datos.txtexperienciavivida), "", Datos.txtexperienciavivida)
            txtexperienciavividademas.Text = IIf(IsDBNull(Datos.txtexperienciavividademas), "", Datos.txtexperienciavividademas)
            txtproyeccionfuturo.Text = IIf(IsDBNull(Datos.txtproyeccionfuturo), "", Datos.txtproyeccionfuturo)
            txtreconocerol.Text = IIf(IsDBNull(Datos.txtreconocerol), "", Datos.txtreconocerol)
            txtreconocepersonafortaleza.Text = IIf(IsDBNull(Datos.txtreconocepersonafortaleza), "", Datos.txtreconocepersonafortaleza)
            txtidentificaemociones.Text = IIf(IsDBNull(Datos.txtidentificaemociones), "", Datos.txtidentificaemociones)
            txtreconocerelacionesafectivas.Text = IIf(IsDBNull(Datos.txtreconocerelacionesafectivas), "", Datos.txtreconocerelacionesafectivas)
            txtasertivodecisiones.Text = IIf(IsDBNull(Datos.txtasertivodecisiones), "", Datos.txtasertivodecisiones)
            txtusodialogo.Text = IIf(IsDBNull(Datos.txtusodialogo), "", Datos.txtusodialogo)
            txtbienestarPsicologico.Text = IIf(IsDBNull(Datos.txtbienestarPsicologico), "", Datos.txtbienestarPsicologico)



        End Using

    End Sub
#End Region
#Region "Metodos"
    Sub guardar(ByVal primeravez As Boolean) 'Guarda los datos en la bd
        Dim Datos As New Web_ModuloPsicosocialIndividual

        Datos.rbexperienciavivida = IIf(rbexperienciavivida.SelectedIndex = "-1", 0, rbexperienciavivida.SelectedIndex + 1)
        Datos.rbreconocerol = IIf(rbreconocerol.SelectedIndex = "-1", 0, rbreconocerol.SelectedIndex + 1)
        Datos.rbreconocepersonafortaleza = IIf(rbreconocepersonafortaleza.SelectedIndex = "-1", 0, rbreconocepersonafortaleza.SelectedIndex + 1)
        Datos.rbreconocepersonacualidad = IIf(rbexperienciavividademas.SelectedIndex = "-1", 0, rbexperienciavividademas.SelectedIndex + 1)
        Datos.rbidentificaemociones = IIf(rbidentificaemociones.SelectedIndex = "-1", 0, rbidentificaemociones.SelectedIndex + 1)
        Datos.rbreconocerelacionesafectivas = IIf(rbreconocerelacionesafectivas.SelectedIndex = "-1", 0, rbreconocerelacionesafectivas.SelectedIndex + 1)
        Datos.rbasertivodecisiones = IIf(rbasertivodecisiones.SelectedIndex = "-1", 0, rbasertivodecisiones.SelectedIndex + 1)
        Datos.rbusodialogo = IIf(rbusodialogo.SelectedIndex = "-1", 0, rbusodialogo.SelectedIndex + 1)
        Datos.rbreconocepersonapropone = IIf(rbproyeccionfuturo.SelectedIndex = "-1", 0, CInt(rbproyeccionfuturo.SelectedIndex) + 1)
        Datos.rbbienestarPsicologico = If(rbbienestarPsicologico.SelectedIndex = "-1", 0, CInt(rbbienestarPsicologico.SelectedIndex) + 1)

        Datos.txtexperienciavivida = IIf(txtexperienciavivida.Text = Nothing, "", txtexperienciavivida.Text)
        Datos.txtexperienciavividademas = IIf(txtexperienciavividademas.Text = Nothing, "", txtexperienciavividademas.Text)
        Datos.txtproyeccionfuturo = IIf(txtproyeccionfuturo.Text = Nothing, "", txtproyeccionfuturo.Text)
        Datos.txtreconocerol = IIf(txtreconocerol.Text = Nothing, "", txtreconocerol.Text)
        Datos.txtreconocepersonafortaleza = IIf(txtreconocepersonafortaleza.Text = Nothing, "", txtreconocepersonafortaleza.Text)
        Datos.txtidentificaemociones = IIf(txtidentificaemociones.Text = Nothing, "", txtidentificaemociones.Text)
        Datos.txtreconocerelacionesafectivas = IIf(txtreconocerelacionesafectivas.Text = Nothing, "", txtreconocerelacionesafectivas.Text)
        Datos.txtasertivodecisiones = IIf(txtasertivodecisiones.Text = Nothing, "", txtasertivodecisiones.Text)
        Datos.txtusodialogo = IIf(txtusodialogo.Text = Nothing, "", txtusodialogo.Text)
        Datos.txtbienestarPsicologico = IIf(txtbienestarPsicologico.Text = Nothing, "", txtbienestarPsicologico.Text)


        Datos.FechaRegistro = Now()

        Datos.idPersona = Request.QueryString.Item("idPersona")
        Datos.idvisita = Request.QueryString.Item("idvisita")



        Try
            Using bd As New BdHogaresDataContext
                bd.Web_ModuloPsicosocialIndividuals.InsertOnSubmit(Datos)
                bd.SubmitChanges()
                bd.registrarLog(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath)
            End Using

        Catch ex As Exception
            mensaje = "ERROR"
            Exepcion = ex.Message
        Finally
            If Not IsNothing(mensaje) Then
                Using bd As New bdSeguridadDataContext 'calcula el numero de error que sera asignado al usuario
                    Dim a = (From i In bd.web_Errores Select i.idError).Max
                    NumeroError = a.ToString
                End Using

                Using bd As New BdHogaresDataContext
                    bd.registrarLogError(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath, Exepcion) 'Guarda en la tabla web_errores la exepción
                End Using
                If Not primeravez = True Then
                    contentmsg.InnerHtml = "<script>mostrarmensaje('Error en el registro de los datos','Ha ocurrido un error guardando los datos, por favor pongase en contacto con el administrador del sistema. <br>EL NÚMERO DE SU ERROR ES:" & NumeroError.ToString + 1 & "' ,'error');</script>"
                End If

            Else
                If Not primeravez = True Then
                    contentmsg.InnerHtml = "<script>mostrarmensaje('Registro de datos exitoso','Los datos fueron guardados correctamente<br> <br><br><input id=\'Button1\' type=\'button\' value=\'Regresar\' onclick=\'redireccionar(); />','success');</script>"
                End If
            End If
        End Try
    End Sub


#End Region
#Region "Enventos controles"


    Sub actualizardatos(ByVal primeravez As Boolean)
        Using bda As New BdHogaresDataContext
            Dim Datos = (From i In bda.Web_ModuloPsicosocialIndividuals
            Where (i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value)
                      Select i).Single()


            Datos.rbexperienciavivida = If(rbexperienciavivida.SelectedIndex = "-1", 0, CInt(rbexperienciavivida.SelectedValue))
            Datos.rbexperienciavividademas = If(rbexperienciavividademas.SelectedIndex = "-1", 0, CInt(rbexperienciavividademas.SelectedValue))
            Datos.rbproyeccionfuturo = If(rbproyeccionfuturo.SelectedIndex = "-1", 0, CInt(rbproyeccionfuturo.SelectedValue))

            Datos.rbreconocerol = If(rbreconocerol.SelectedIndex = "-1", 0, CInt(rbreconocerol.SelectedValue))
            Datos.rbreconocepersonafortaleza = If(rbreconocepersonafortaleza.SelectedIndex = "-1", 0, CInt(rbreconocepersonafortaleza.SelectedValue))
            Datos.rbreconocepersonacualidad = If(rbexperienciavividademas.SelectedIndex = "-1", 0, CInt(rbexperienciavividademas.SelectedValue))
            Datos.rbidentificaemociones = If(rbidentificaemociones.SelectedIndex = "-1", 0, CInt(rbidentificaemociones.SelectedValue))
            Datos.rbreconocerelacionesafectivas = If(rbreconocerelacionesafectivas.SelectedIndex = "-1", 0, CInt(rbreconocerelacionesafectivas.SelectedValue))
            Datos.rbasertivodecisiones = If(rbasertivodecisiones.SelectedIndex = "-1", 0, CInt(rbasertivodecisiones.SelectedValue))
            Datos.rbusodialogo = If(rbusodialogo.SelectedIndex = "-1", 0, CInt(rbusodialogo.SelectedValue))
            Datos.rbreconocepersonapropone = If(rbproyeccionfuturo.SelectedIndex = "-1", 0, CInt(rbproyeccionfuturo.SelectedValue))
            Dim prba As Integer = CInt(rbbienestarPsicologico.SelectedValue)

            Datos.rbbienestarPsicologico = If(rbbienestarPsicologico.SelectedIndex = "-1", 0, prba)

            Datos.txtexperienciavivida = IIf(txtexperienciavivida.Text = Nothing, "", txtexperienciavivida.Text)
            Datos.txtexperienciavividademas = IIf(txtexperienciavividademas.Text = Nothing, "", txtexperienciavividademas.Text)
            Datos.txtproyeccionfuturo = IIf(txtproyeccionfuturo.Text = Nothing, "", txtproyeccionfuturo.Text)
            Datos.txtreconocerol = IIf(txtreconocerol.Text = Nothing, "", txtreconocerol.Text)
            Datos.txtreconocepersonafortaleza = IIf(txtreconocepersonafortaleza.Text = Nothing, "", txtreconocepersonafortaleza.Text)
            Datos.txtidentificaemociones = IIf(txtidentificaemociones.Text = Nothing, "", txtidentificaemociones.Text)
            Datos.txtreconocerelacionesafectivas = IIf(txtreconocerelacionesafectivas.Text = Nothing, "", txtreconocerelacionesafectivas.Text)
            Datos.txtasertivodecisiones = IIf(txtasertivodecisiones.Text = Nothing, "", txtasertivodecisiones.Text)
            Datos.txtusodialogo = IIf(txtusodialogo.Text = Nothing, "", txtusodialogo.Text)
            Datos.txtbienestarPsicologico = IIf(txtbienestarPsicologico.Text = Nothing, "", txtbienestarPsicologico.Text)


            Datos.FechaRegistro = Now()




            Try
                Using bd As New BdHogaresDataContext
                    bda.SubmitChanges()
                    bd.registrarLog(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath)
                End Using

            Catch ex As Exception
                mensaje = "ERROR"
                Exepcion = ex.Message
            Finally
                If Not IsNothing(mensaje) Then
                    Using bd As New bdSeguridadDataContext 'calcula el numero de error que sera asignado al usuario
                        Dim a = (From i In bd.web_Errores Select i.idError).Max
                        NumeroError = a.ToString
                    End Using

                    Using bd As New BdHogaresDataContext
                        bd.registrarLogError(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath, Exepcion) 'Guarda en la tabla web_errores la exepción
                    End Using
                    If Not primeravez = True Then
                        contentmsg.InnerHtml = "<script>mostrarmensaje('Error en el registro de los datos','Ha ocurrido un error guardando los datos, por favor pongase en contacto con el administrador del sistema. <br>EL NÚMERO DE SU ERROR ES:" & NumeroError.ToString + 1 & "' ,'error');</script>"
                    End If

                Else
                    If Not primeravez = True Then
                        Response.Write("<script>alert('Los datos se han guardado de manera exitosa');</script>")
                        Response.Write("<script>var pagina = 'PersonasConsulta.aspx?Psicosocial=1&idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value & "';window.location = pagina;</script>")


                        'contentmsg.InnerHtml = "<script>mostrarmensaje('Registro de datos exitoso','Los datos fueron guardados correctamente<br> <br><br><input id=\'Button1\' type=\'button\' value=\'Regresar\' onclick=\'redireccionar(); />','success');</script>"
                    End If
                End If
            End Try


        End Using

    End Sub
    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Response.Redirect("PersonasConsulta.aspx?Psicosocial=1&idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value)
    End Sub
#End Region


    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        actualizardatos(False)
    End Sub

    Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate

    End Sub
End Class
